A storage environment may provide clients with access to data using storage area network (SAN) protocols, such as through Small Computer System Interface (SCSI), internet SCSI (iSCIS), Fiber Channel Protocol (FCP), etc. In an example, the storage environment may comprise one or more storage controllers configured to provide clients with access to data within storage devices owned by such storage controllers. For example, a first storage controller may provide clients with access to data within a first storage device. A second storage controller may provide clients with access to data within a second storage device.
A synchronous replication relationship may be established between the first storage controller and the second storage controller, which may improve data loss protection and mitigate client interruptions of service in the event a storage controller and/or storage device fails or becomes unavailable. For example, data may be replicated from the first storage device to a secondary storage device (e.g., replicated to a storage device accessible to the second storage controller but initially owned by the first storage controller) so that the second storage controller may provide clients with failover access to replicated data within the secondary storage device in the event the first storage controller fails. In an example of synchronous replication, a write request, targeting the first storage device, may be split into a local write request that is to be performed upon the first storage device and a remote write request that it to be performed upon the secondary storage device (e.g., the local write request may be performed first upon the first storage device, and upon completion of the local write request, the remote write request may be performed upon the second storage device). Once both the local write request and the remote write request are complete, a write request complete notification may be provided back to a client that issued the write request. In an example, the local write request and the remote write request may be performed in parallel. Unfortunately, synchronous replication may be implemented within a file system, and thus changes to the file system may render the synchronous replication inoperable. Additionally, synchronous replication may be merely available at a coarse level of granularity, such as a volume level or storage controller level, and thus resources that may otherwise be used for storage operations and client data access may be undesirably consumed by overhead associated with coarse grain synchronous replication (e.g., a volume may comprise some files that a client wants replicated and other files for which the client is not interested in replication, but volume level replication may replicate all files of the volume).